#include <iostream>
#include <unistd.h>
#include <string>
#include <signal.h>
#include <sys/types.h>
using namespace std;


// void Usage(string proc)
// {
//     cout<<"Usage:\n\t"<<proc<<" signum pid\n\n";
// }

// //mykill signum pid
// int main(int argc,char* argv[])
// {
//     if(argc!=3)
//     {
//         Usage(argv[0]);
//         exit(1);
//     }
//     int signum=stoi(argv[1]);
//     pid_t pid=stoi(argv[2]);

//     int n=kill(pid,signum);
//     if(n==-1)
//     {
//         perror("kill");
//         exit(2);
//     }
//     return 0;
// }

//参数必须是int表示收到了哪一个信号,在调用signal后，如果进程收到了2号信号，那2或者SIGINT就会被作为参数传到myhandler中
void myhandler(int signo)
{
    cout << "process get signal: " << signo << endl;
    // exit(1);
}
int main()
{
    //信号捕捉
    //signal(SIGINT,myhandler);//只需要设置一次，往后的代码都有效
    //signal(3,myhandler);
    //信号的产生和我们自己的代码的运行是异步的

    for (int i = 1; i <= 31; i++)
    {
        signal(i, myhandler);
    }

    while (true)
    {
        cout << "i am a crazy process : " << getpid() << endl;
        sleep(1);
    }
    return 0;
}